Open
Conversation
… handler, and integration tests
…th IIFE generators and integration tests
…nstants, allow_entry_in with runtime, codegen, and integration tests
…omplete hasStrategyRuntimeInExpression detection with runtime, codegen, and integration tests
…al lookback storage, unit and integration tests
…ith runtime, codegen, and unit tests
…eriod support, and integration tests
…dd FSB state preservation integration tests
…c-driven codegen, security evaluator state, and regression tests
…ers, IIFE generators, security evaluator state, and integration tests
…tch-up loop alignment and idempotency tests
…ared Keltner builder extraction, and golden tests
…arrow scopes with shared initializer, dead code removal, and regression tests
…cessor, array.get/size codegen, and regression tests
…empVarEmissionTracker, ConditionalExpression boolean wrapping, and regression tests
…torage with direct Series in state managers, and add security TA integration tests
…rsSince state manager with ForwardSeriesBuffer, and end-to-end regression tests
…riesOffsetShifter extraction, IIFE bounds-checked OHLCV pattern support, and end-to-end integration tests
…Expression with BarEvaluator interface, expressionKey cache isolation, and end-to-end regression tests
…float) with open registry dispatch, ta.* alias routing, and end-to-end regression tests
…er resolver, v3 alias registry, loop counter float64 cast, and end-to-end regression tests
…ring parameter detection via equality comparison codegen, dual call-site capture registry, and end-to-end regression tests
…support, strategy.close/close_all safe snapshot multi-trade closing, and end-to-end integration tests
…eak/pointfigure qualification with heikenashi typo tolerance, and end-to-end regression tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Go Runner PoC
Performance
License Safety
1Codegen expression emission correctness✅ FIXED — Unary negation now routes throughgenerateConditionExpression(clean inline). If-block variables promoted viaNestedVariableScanner.ScanIfBlockin first passmoon, aostochgenerator.go,nested_variable_scanner.go,variable_declaration_registrar.go2UDF/arrow body scope lacks built-in accesstime,time_close,time_tradingday,last_bar_time,timenow,dayofweek,dayofmonth,hour,minute,month,second,year,weekofyear,last_bar_index,na. Resolved namespaces (9):barstate.*,timeframe.*,syminfo.*,dayofweek.*,session.*,chart.*,dividends.*,earnings.*,math.*. Resolved functions:timeframe.change/from_seconds/in_seconds,timestamp(),year()/month()/dayofweek()/dayofmonth()/hour()/minute()/second()/weekofyear(),time(). All blocker items resolved.~~ann,ultima,ut+,moonbuiltin_identifier_registry.go,builtin_namespace_resolver.go,builtin_identifier_handler.go,builtin_access_scope.go,arrow_builtin_access_generator.go,builtin_usage_detector.go,time_series_lifecycle.go,session_series_lifecycle.go,generator.go,runtime/context/timeframe.go,calendar_handler.go,call_handler_calendar.go,call_handler_timeframe_func.go,inline_timeframe_change_handler.go,timeframe_change_codegen.go,runtime/calendar/calendar.go,runtime/calendar/timestamp.go,runtime/context/timeframe_boundary.go,runtime/context/timeframe_converter.go,time_handler.go,value_handler.go3Expression-position function dispatch gap✅ FIXED —generator.go:generateVariableFromCall()now routes throughCallExpressionRouterbefore TODO fallback (lines 2555-2562). All registered handlers (str.*, ticker.*, math.*, value.*, calendar.*, timeframe.*, color.*, strategy.*) now work in variable assignment expressions.ExpressionPositionDispatcherfallback routes expression-position calls throughCallExpressionRouter.HoistableCallClassifiergatesTAFunctionRegistryhandlers for hoisting. RuntimeDynamic-period TA calls now hoisted viaSupportsDynamicPeriod()dispatch (sma, ema, stdev, highest, lowest confirmed end-to-end; rsi/atr hoisted but rejected at handler level:handler_rsi_handler.go:27,handler_atr_handler.go:27). Per-statement interleaved calc emission prevents NaN ordering in hoisted calcs. security()/request.security() in expression position now hoisted through full evaluator via 2-gate classification (IsHoistable+requiresTempVar).IsSecurityFunctionshared predicate consolidates 7 callsites. Still affects: unregistered ta.* (#5), array.* (#12), map.* (#13), request.* (non-security functions, #16). Remaining gaps: ta.rsi/ta.atr rejectIsRuntimeDynamic()at handler level; multiple dynamic-period TA calls in same scope generate duplicateperiod :=declarationsalpha (#5), zigzag (#10)expression_position_dispatcher.go,hoistable_call_classifier.go,variable_init_call_filter.go,security_function_classifier.go,dynamic_period_support.go,dynamic_period_ta_generator.go,dynamic_period_emitters.go,handler_rsi_handler.go,handler_atr_handler.go,generator.go,call_expression_router_position_test.go4Computed period expressions unsupported✅ FIXED —ComputedPeriodrenders arbitrary expressions viaexprGen.Generate(). Arithmetic (length/2), function calls (math.round(math.sqrt(length))), and compound expressions now supportedhullperiod_expression.go,arrow_function_ta_call_generator.go,arrow_inline_ta_call_generator.go,inline_ta_registry.gota.*function coveragebarssince,mfi,cumta_function_handler.go:33,tuple_indicator_registry.go,ta_signatures*.go6Color literal and function gaps✅ FIXED — HexColor regex supports 8-digit RGBA. All 7 color.* functions implemented: color.new, color.rgb, color.from_gradient, color.r/g/b/t. ColorHandler + ColorFunctionRegistry + ColorCallHandler in router. Runtime invisual/color.gomaxcolor_handler.go,color_function_registry.go,call_handler_color.go,runtime/visual/color.go,grammar.gostrategy.*API surface incompletecall_handler_strategy.go,runtime/strategy/strategy.go,runtime/strategy/aggregators.go,codegen/builtin_identifier_handler.go8input.*missing type handlers✅ CLOSED — 13/13 implementable input.* handlers complete.input.enumrequiresenumkeyword (language-level feature → #23)max,ultimainput_handler.go,input_constant_extractor.go,input_type_resolver.go,input_declaration_resolver.go,color_constant_resolver.go9String functions (str.*)✅ FIXED — 18/18 official str.* functions implemented viaStringNamespaceHandlerwith full CallExpressionRouter integration. Implemented: str.tostring, str.tonumber, str.length, str.format, str.format_time, str.contains, str.pos, str.substring, str.lower, str.upper, str.trim, str.replace, str.replace_all, str.split, str.startswith, str.endswith, str.repeat, str.match. Strategy pattern with 8 code generators:SimpleStringGenerator,TwoArgStringGenerator,SubstringGenerator,ReplaceGenerator,RepeatGenerator,ToStringGenerator,FormatGenerator,FormatTimeGenerator. DRY architecture:StringArgumentParserfor argument extraction,StringFunctionRegistryfor signature validation,StringFunctionSignaturefor argument count enforcement. 147 test cases incall_handler_string_test.govalidate all functions, argument variations, nested expressions, and router integrationultimacall_handler_string.go,call_handler_string_test.go,string_argument_parser.go,string_code_generators.go,string_function_registry.go,string_function_signature.go,call_handler.go,call_handler_test.go10ticker.*namespace gaps✅ CLOSED — 9/9 official ticker.* functions have handlers with full argument support: heikinashi, renko, kagi, linebreak, pointfigure, standard, new, modify, inherit. Session/adjustment/backadjustment/settlement_as_close modifiers encoded in ticker ID via runtime TickerID struct. Codegen resolves Pine modifier constants (session.regular/extended, adjustment.none/splits/dividends, backadjustment.inherit/on/off, settlement_as_close.inherit/on/off). Non-HA chart type transformers return identity → #11—call_handler_ticker.go,ticker_modifier_resolver.go,runtime/ticker/session.go,runtime/ticker/ticker_id.go,runtime/ticker/constructor.goIdentityTransformer(passthrough)bar_transformer.go:52array.*)map.*)alert()/alertcondition()plot()implemented — missing bgcolor, barcolor, fill, hline, plotarrow, plotbar, plotcandle, plotchar, plotshapecall_handler_plot.gohandlesplot()onlyrequest.*namespace gapsrequest.security correctness: derived price field resolution (ohlc4/hlc3/hl2/hlcc4), input defval extraction for resolution-type, Pine v1/v2 lookahead default, cross-timeframe time-range extension.Missing (9): request.security_lower_tf, request.currency_rate, request.dividends, request.earnings, request.economic, request.financial, request.quandl, request.seed, request.splitsannsecurity_inject.go,security_field_resolver.go,input_defval_resolver.go,security_argument_extractor.go,security_bar_mapper.go,bar_evaluator.gomatrix.*data structurelog.*/runtime.*/ misc functionsimport/exportimport user/library/version as aliasandexportkeyword for function/UDT publishingtype)typedeclarations / UDTs. Official Pine supportstypekeyword with field declarations,.new()constructors, field access via dot notationmethod)methoddeclarations. Official Pine supportsmethodkeyword for user-defined methods on built-in and user-defined types with dot-call syntaxmap.new<K,V>()generics</>lexed as comparison operators, no generic type syntax in grammar. Blocksmap.new<>,array.new<>,matrix.new<>and generic UDT fieldsunexpected token ","onmap.new<string, float>()enumkeyword +input.enum()enumdeclarations. Blocksinput.enum(), enum field dot access,str.tostring(enum), enum in collection type templates. 0 hits in lexer/parser/AST. Functionally equivalent dropdown already supported viainput.string(..., options=[...])+switch